package com.itheima.config;

import org.springframework.web.filter.CharacterEncodingFilter;
import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;

import javax.servlet.FilterRegistration;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;

//这里有个思想叫做约定大于配置，这里的继承处理就是约定好的

//服务器启动时从这里开始加载
public class WebConfig extends AbstractAnnotationConfigDispatcherServletInitializer {
    /*
     *加载Spring的核心配置文件
     */
    @Override
    protected Class<?>[] getRootConfigClasses() {
        return new Class[]{SpringConfig.class, MybatisConfig.class};
    }

    /*
    加载SpringMVC的核心配置文件
     */
    @Override
    protected Class<?>[] getServletConfigClasses() {
        return new Class[]{SpringMVCConfig.class};
    }

    @Override
    protected String[] getServletMappings() {
        return new String[]{"/"};//设置拦截路径
    }

    //过滤器这个部分比较难理解
    @Override
    public void onStartup(ServletContext servletContext) throws ServletException {
        // 调用父类对应的方法,完成初始化工作
        super.onStartup(servletContext);
        // 配置我们自己的过滤器
        FilterRegistration.Dynamic dynamic =
                servletContext.addFilter("encodingFilter", CharacterEncodingFilter.class);
        dynamic.setInitParameter("encoding", "utf-8");
        //设置需要过滤器,过滤的路径
        // 参数l: 拦截方式
        // 参数2: 加载顺序, 和web.xml文件相比,先加载谁
        // 参数3: 拦截的路径
        dynamic.addMappingForUrlPatterns(null, true, "/*");///*表示过滤所有
    }
}
